/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.bs.Beans;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Bone
 */
@Entity
@Table(name = "patrim_bem")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "PatrimBem.findAll", query = "SELECT p FROM PatrimBem p")})
public class PatrimBem implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(nullable = false)
    private Integer id;
    @Column(name = "NUMERO_NB", length = 20)
    private String numeroNb;
    @Column(length = 100)
    private String nome;
    @Lob
    @Column(length = 65535)
    private String descricao;
    @Column(name = "NUMERO_SERIE", length = 50)
    private String numeroSerie;
    @Column(name = "DATA_AQUISICAO")
    @Temporal(TemporalType.DATE)
    private Date dataAquisicao;
    @Column(name = "DATA_ACEITE")
    @Temporal(TemporalType.DATE)
    private Date dataAceite;
    @Column(name = "DATA_CADASTRO")
    @Temporal(TemporalType.DATE)
    private Date dataCadastro;
    @Column(name = "DATA_CONTABILIZADO")
    @Temporal(TemporalType.DATE)
    private Date dataContabilizado;
    @Column(name = "DATA_VISTORIA")
    @Temporal(TemporalType.DATE)
    private Date dataVistoria;
    @Column(name = "DATA_MARCACAO")
    @Temporal(TemporalType.DATE)
    private Date dataMarcacao;
    @Column(name = "DATA_BAIXA")
    @Temporal(TemporalType.DATE)
    private Date dataBaixa;
    @Column(name = "VENCIMENTO_GARANTIA")
    @Temporal(TemporalType.DATE)
    private Date vencimentoGarantia;
    @Column(name = "NUMERO_NOTA_FISCAL", length = 50)
    private String numeroNotaFiscal;
    @Column(name = "CHAVE_NFE", length = 44)
    private String chaveNfe;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "VALOR_ORIGINAL", precision = 18, scale = 6)
    private BigDecimal valorOriginal;
    @Column(name = "VALOR_COMPRA", precision = 18, scale = 6)
    private BigDecimal valorCompra;
    @Column(name = "VALOR_ATUALIZADO", precision = 18, scale = 6)
    private BigDecimal valorAtualizado;
    @Column(name = "VALOR_BAIXA", precision = 18, scale = 6)
    private BigDecimal valorBaixa;
    private Character deprecia;
    @Column(name = "METODO_DEPRECIACAO")
    private Character metodoDepreciacao;
    @Column(name = "INICIO_DEPRECIACAO")
    @Temporal(TemporalType.DATE)
    private Date inicioDepreciacao;
    @Column(name = "ULTIMA_DEPRECIACAO")
    @Temporal(TemporalType.DATE)
    private Date ultimaDepreciacao;
    @Column(name = "TIPO_DEPRECIACAO")
    private Character tipoDepreciacao;
    @Column(name = "TAXA_ANUAL_DEPRECIACAO", precision = 18, scale = 6)
    private BigDecimal taxaAnualDepreciacao;
    @Column(name = "TAXA_MENSAL_DEPRECIACAO", precision = 18, scale = 6)
    private BigDecimal taxaMensalDepreciacao;
    @Column(name = "TAXA_DEPRECIACAO_ACELERADA", precision = 18, scale = 6)
    private BigDecimal taxaDepreciacaoAcelerada;
    @Column(name = "TAXA_DEPRECIACAO_INCENTIVADA", precision = 18, scale = 6)
    private BigDecimal taxaDepreciacaoIncentivada;
    @Lob
    @Column(length = 65535)
    private String funcao;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idPatrimBem")
    private List<PatrimApoliceSeguro> patrimApoliceSeguroList;
    @JoinColumn(name = "ID_SETOR", referencedColumnName = "ID", nullable = false)
    @ManyToOne(optional = false)
    private Setor idSetor;
    @JoinColumn(name = "ID_FORNECEDOR", referencedColumnName = "ID", nullable = false)
    @ManyToOne(optional = false)
    private Fornecedor idFornecedor;
    @JoinColumn(name = "ID_COLABORADOR", referencedColumnName = "ID", nullable = false)
    @ManyToOne(optional = false)
    private Colaborador idColaborador;
    @JoinColumn(name = "ID_PATRIM_ESTADO_CONSERVACAO", referencedColumnName = "ID", nullable = false)
    @ManyToOne(optional = false)
    private PatrimEstadoConservacao idPatrimEstadoConservacao;
    @JoinColumn(name = "ID_PATRIM_TIPO_AQUISICAO_BEM", referencedColumnName = "ID", nullable = false)
    @ManyToOne(optional = false)
    private PatrimTipoAquisicaoBem idPatrimTipoAquisicaoBem;
    @JoinColumn(name = "ID_PATRIM_GRUPO_BEM", referencedColumnName = "ID", nullable = false)
    @ManyToOne(optional = false)
    private PatrimGrupoBem idPatrimGrupoBem;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idPatrimBem")
    private List<PatrimDocumentoBem> patrimDocumentoBemList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idPatrimBem")
    private List<PatrimMovimentacaoBem> patrimMovimentacaoBemList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idPatrimBem")
    private List<PatrimDepreciacaoBem> patrimDepreciacaoBemList;

    public PatrimBem() {
    }

    public PatrimBem(Integer id) {
        this.id = id;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getNumeroNb() {
        return numeroNb;
    }

    public void setNumeroNb(String numeroNb) {
        this.numeroNb = numeroNb;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public String getNumeroSerie() {
        return numeroSerie;
    }

    public void setNumeroSerie(String numeroSerie) {
        this.numeroSerie = numeroSerie;
    }

    public Date getDataAquisicao() {
        return dataAquisicao;
    }

    public void setDataAquisicao(Date dataAquisicao) {
        this.dataAquisicao = dataAquisicao;
    }

    public Date getDataAceite() {
        return dataAceite;
    }

    public void setDataAceite(Date dataAceite) {
        this.dataAceite = dataAceite;
    }

    public Date getDataCadastro() {
        return dataCadastro;
    }

    public void setDataCadastro(Date dataCadastro) {
        this.dataCadastro = dataCadastro;
    }

    public Date getDataContabilizado() {
        return dataContabilizado;
    }

    public void setDataContabilizado(Date dataContabilizado) {
        this.dataContabilizado = dataContabilizado;
    }

    public Date getDataVistoria() {
        return dataVistoria;
    }

    public void setDataVistoria(Date dataVistoria) {
        this.dataVistoria = dataVistoria;
    }

    public Date getDataMarcacao() {
        return dataMarcacao;
    }

    public void setDataMarcacao(Date dataMarcacao) {
        this.dataMarcacao = dataMarcacao;
    }

    public Date getDataBaixa() {
        return dataBaixa;
    }

    public void setDataBaixa(Date dataBaixa) {
        this.dataBaixa = dataBaixa;
    }

    public Date getVencimentoGarantia() {
        return vencimentoGarantia;
    }

    public void setVencimentoGarantia(Date vencimentoGarantia) {
        this.vencimentoGarantia = vencimentoGarantia;
    }

    public String getNumeroNotaFiscal() {
        return numeroNotaFiscal;
    }

    public void setNumeroNotaFiscal(String numeroNotaFiscal) {
        this.numeroNotaFiscal = numeroNotaFiscal;
    }

    public String getChaveNfe() {
        return chaveNfe;
    }

    public void setChaveNfe(String chaveNfe) {
        this.chaveNfe = chaveNfe;
    }

    public BigDecimal getValorOriginal() {
        return valorOriginal;
    }

    public void setValorOriginal(BigDecimal valorOriginal) {
        this.valorOriginal = valorOriginal;
    }

    public BigDecimal getValorCompra() {
        return valorCompra;
    }

    public void setValorCompra(BigDecimal valorCompra) {
        this.valorCompra = valorCompra;
    }

    public BigDecimal getValorAtualizado() {
        return valorAtualizado;
    }

    public void setValorAtualizado(BigDecimal valorAtualizado) {
        this.valorAtualizado = valorAtualizado;
    }

    public BigDecimal getValorBaixa() {
        return valorBaixa;
    }

    public void setValorBaixa(BigDecimal valorBaixa) {
        this.valorBaixa = valorBaixa;
    }

    public Character getDeprecia() {
        return deprecia;
    }

    public void setDeprecia(Character deprecia) {
        this.deprecia = deprecia;
    }

    public Character getMetodoDepreciacao() {
        return metodoDepreciacao;
    }

    public void setMetodoDepreciacao(Character metodoDepreciacao) {
        this.metodoDepreciacao = metodoDepreciacao;
    }

    public Date getInicioDepreciacao() {
        return inicioDepreciacao;
    }

    public void setInicioDepreciacao(Date inicioDepreciacao) {
        this.inicioDepreciacao = inicioDepreciacao;
    }

    public Date getUltimaDepreciacao() {
        return ultimaDepreciacao;
    }

    public void setUltimaDepreciacao(Date ultimaDepreciacao) {
        this.ultimaDepreciacao = ultimaDepreciacao;
    }

    public Character getTipoDepreciacao() {
        return tipoDepreciacao;
    }

    public void setTipoDepreciacao(Character tipoDepreciacao) {
        this.tipoDepreciacao = tipoDepreciacao;
    }

    public BigDecimal getTaxaAnualDepreciacao() {
        return taxaAnualDepreciacao;
    }

    public void setTaxaAnualDepreciacao(BigDecimal taxaAnualDepreciacao) {
        this.taxaAnualDepreciacao = taxaAnualDepreciacao;
    }

    public BigDecimal getTaxaMensalDepreciacao() {
        return taxaMensalDepreciacao;
    }

    public void setTaxaMensalDepreciacao(BigDecimal taxaMensalDepreciacao) {
        this.taxaMensalDepreciacao = taxaMensalDepreciacao;
    }

    public BigDecimal getTaxaDepreciacaoAcelerada() {
        return taxaDepreciacaoAcelerada;
    }

    public void setTaxaDepreciacaoAcelerada(BigDecimal taxaDepreciacaoAcelerada) {
        this.taxaDepreciacaoAcelerada = taxaDepreciacaoAcelerada;
    }

    public BigDecimal getTaxaDepreciacaoIncentivada() {
        return taxaDepreciacaoIncentivada;
    }

    public void setTaxaDepreciacaoIncentivada(BigDecimal taxaDepreciacaoIncentivada) {
        this.taxaDepreciacaoIncentivada = taxaDepreciacaoIncentivada;
    }

    public String getFuncao() {
        return funcao;
    }

    public void setFuncao(String funcao) {
        this.funcao = funcao;
    }

    @XmlTransient
    public List<PatrimApoliceSeguro> getPatrimApoliceSeguroList() {
        return patrimApoliceSeguroList;
    }

    public void setPatrimApoliceSeguroList(List<PatrimApoliceSeguro> patrimApoliceSeguroList) {
        this.patrimApoliceSeguroList = patrimApoliceSeguroList;
    }

    public Setor getIdSetor() {
        return idSetor;
    }

    public void setIdSetor(Setor idSetor) {
        this.idSetor = idSetor;
    }

    public Fornecedor getIdFornecedor() {
        return idFornecedor;
    }

    public void setIdFornecedor(Fornecedor idFornecedor) {
        this.idFornecedor = idFornecedor;
    }

    public Colaborador getIdColaborador() {
        return idColaborador;
    }

    public void setIdColaborador(Colaborador idColaborador) {
        this.idColaborador = idColaborador;
    }

    public PatrimEstadoConservacao getIdPatrimEstadoConservacao() {
        return idPatrimEstadoConservacao;
    }

    public void setIdPatrimEstadoConservacao(PatrimEstadoConservacao idPatrimEstadoConservacao) {
        this.idPatrimEstadoConservacao = idPatrimEstadoConservacao;
    }

    public PatrimTipoAquisicaoBem getIdPatrimTipoAquisicaoBem() {
        return idPatrimTipoAquisicaoBem;
    }

    public void setIdPatrimTipoAquisicaoBem(PatrimTipoAquisicaoBem idPatrimTipoAquisicaoBem) {
        this.idPatrimTipoAquisicaoBem = idPatrimTipoAquisicaoBem;
    }

    public PatrimGrupoBem getIdPatrimGrupoBem() {
        return idPatrimGrupoBem;
    }

    public void setIdPatrimGrupoBem(PatrimGrupoBem idPatrimGrupoBem) {
        this.idPatrimGrupoBem = idPatrimGrupoBem;
    }

    @XmlTransient
    public List<PatrimDocumentoBem> getPatrimDocumentoBemList() {
        return patrimDocumentoBemList;
    }

    public void setPatrimDocumentoBemList(List<PatrimDocumentoBem> patrimDocumentoBemList) {
        this.patrimDocumentoBemList = patrimDocumentoBemList;
    }

    @XmlTransient
    public List<PatrimMovimentacaoBem> getPatrimMovimentacaoBemList() {
        return patrimMovimentacaoBemList;
    }

    public void setPatrimMovimentacaoBemList(List<PatrimMovimentacaoBem> patrimMovimentacaoBemList) {
        this.patrimMovimentacaoBemList = patrimMovimentacaoBemList;
    }

    @XmlTransient
    public List<PatrimDepreciacaoBem> getPatrimDepreciacaoBemList() {
        return patrimDepreciacaoBemList;
    }

    public void setPatrimDepreciacaoBemList(List<PatrimDepreciacaoBem> patrimDepreciacaoBemList) {
        this.patrimDepreciacaoBemList = patrimDepreciacaoBemList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof PatrimBem)) {
            return false;
        }
        PatrimBem other = (PatrimBem) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.bs.Beans.PatrimBem[ id=" + id + " ]";
    }
    
}
